package com.dog.basics.service.mtkj;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.dog.basics.bean.dto.admin.mtkj.GoodFromDto;
import com.dog.basics.bean.dto.api.mtkj.ApiGoodAddDto;
import com.dog.basics.bean.dto.api.mtkj.ApiGoodEditDto;
import com.dog.basics.bean.dto.api.mtkj.ApiGoodFromDto;
import com.dog.basics.bean.model.mtkj.MtGoods;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dog.basics.bean.vo.admin.mtkj.GoodFromVo;
import com.dog.basics.bean.vo.admin.mtkj.GoodVo;
import com.dog.basics.bean.vo.api.mtkj.ApiGoodsVo;
import com.dog.basics.common.util.PageParam;

/**
 * <p>
 * 商品表 服务类
 * </p>
 *
 * @author wph
 * @since 2020-11-09
 */
public interface IMtGoodsService extends IService<MtGoods> {

    /**
     * 查询商品列表并进行分页
     *      1.搜索商品
     *      2.获取店铺商品
     *      3.获取类别商品
     *      4.获取商铺类别商品
     * @param page
     * @param goodFromDto
     * @return
     * @author hangdy
     */
    IPage<ApiGoodsVo> getPageList(PageParam page, ApiGoodFromDto goodFromDto);


    /**
     * 根据商品id获取商品信息
     * @param id
     * @return
     * @author hangdy
     */
    ApiGoodsVo getGoodById(Long id);

    /**
     * 新增商品
     * @return
     * @author hangdy
     */
    Boolean saveGood(ApiGoodAddDto goodAddDto);

    /**
     * 修改商品信息
     * @param goodEditDto
     * @return
     * @author hangdy
     */
    Boolean editGood(ApiGoodEditDto goodEditDto);

    /**
     * 删除商品信息
     * @return
     * @author hangdy
     */
    Boolean deleteGood(Long id);

    /**
     *  根据商品id对商品进行上架下架操作
     * @param: id 商品id
     * @return: java.lang.Boolean
     * @author hangdy
     * @date: 2020/11/12 9:58
     */
    Boolean goodUpOrDown(Long id);


    /**
     * Admin服务
     *  删除商品
     * @param: id
     * @returns
     * @author hangdy
     * @date: 2020/11/14 16:24
     */
    Boolean adminDeleteGood(Long id);

    /**
     * Admin服务
     *  获取商品详情
     * @param: id
     * @returns
     * @author hangdy
     * @date: 2020/11/14 16:24
     */
    GoodVo adminfindGood(Long id);

    /**
     * Admin服务
     *  查询商品列表
     * @param: page
     * @param: fromDto
     * @returns
     * @author hangdy
     * @date: 2020/11/14 16:36
     */
    IPage<GoodFromVo> adminFindGoodList(PageParam page, GoodFromDto fromDto);

}
